// /*   /\_/\
// *   (= ._.)
// *   /  >  \>  Author: LJJ
// */
// #include <iostream>
// #include <cstdio>
// #include <cstring>
// #include <algorithm>
// #include <map>
// #include <set>
// #include <unordered_map>
// #include <unordered_set>
// #include <climits>
// #include <iomanip>  // cout << fixed << setprecision(y) << x << endl;
// #include <cmath>
// #include <string>
// #include <vector>
// #define int long long
// #define x first 
// #define y second 
// using namespace std;
// const int N = 1e5 + 10;
// int a[N];
// typedef pair<int,int> PII;
// PII p[N];
// /* 二维vector数组
// vector<vector<char>> g(n,vector<char>(n));
// vector<vector<bool>> st(n,vector<bool>(m,false)); 
// g.resize(n,vector<char>(m));
// st.resize(n,vector<bool>(m,false));
// */
// vector<vector<char>> g;
// vector<vector<bool>> st;
// using namespace std;

// struct Range{
//     int l,r;
//     bool operator < (const Range &w)const
//     {
//         return r < w.r;
//     }
// }range[N];

// void solve()
// {
//     int n;
//     cin >> n;
//     for(int i = 0; i < n; i++)
//     {
//         int l,r;
//         cin >> l >> r;
//         range[i] = {l, r};
//     }

//     sort(range, range + n);
//     int res = 0, dot = -2e9;
//     for(int i = 0; i < n; i++)
//     {
//         if(range[i].l > dot) // 这=是可以的，因为活动时间是开区间
//         {
//             res++;
//             dot = range[i].r;
//         }
//     }
//     cout << res << endl;
// }
// signed main()
// {
//     ios::sync_with_stdio(false);
//     cin.tie(nullptr),cout.tie(nullptr);
//     int t = 1;
//     while(t -- ) solve();
//     return 0;
// }


#include<iostream>
#include<cstdio>
#include<algorithm>
#define x first
#define y second
#define int long long

using namespace std;

typedef pair<int,int> PII;
const int N = 5e5+10;
int n;
PII q[N];

bool compare(const PII &a,const PII &b)
{
    return a.y < b.y;
}
signed main()
{
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> q[i].x >> q[i].y;
    }
    sort(q , q + n, compare);
    int count = 0;
    int endtime = 0;
    for(auto c:q)//用这个必须是下标从0遍历
    {
        if(c.x > endtime)
        {
            count++;
            endtime = c.y;
        }
    }
    cout << count << endl;
    return 0;
}